package com.cn.demo.springboot.vo;

import java.io.Serializable;

/**
	 * 作为接收页面传递到控制器的参数 主要接收：每页显示行数、当前需要显示页数
	 * @author cqyhm
	 * @version 1.0.0
	 * @since 1.0.0
	 */
	public class PageRequest implements Serializable {

		private static final long serialVersionUID = 1792977835382576789L;
		/** 默认每页数据条数:10, */
		protected static final Integer DEFAULT_PAGE_SIZE = 10;
		/** 默认当前页码:1 */
		protected static final Integer DEFAULT_PAGE_NUMBER = 1;

		// 每页显示数据条数
		private Integer pageSize = new Integer(DEFAULT_PAGE_SIZE);
		// 当前页号
		private Integer currentPage = new Integer(DEFAULT_PAGE_NUMBER);

		public PageRequest() {
			this(DEFAULT_PAGE_NUMBER, DEFAULT_PAGE_SIZE);
		}

		/**
		 * 初始化请求
		 * 
		 * @param currentPage
		 *            当前需要显示的页号(从1开始)
		 * @param pageSize
		 *            每页显示记录数(缺省为10)
		 */
		public PageRequest(Integer currentPage, Integer pageSize) {
			setCurrentPage(currentPage);
			setPageSize(pageSize);
		}

		/** 每页显示记录数:默认为10 */
		public void setPageSize(Integer pageSize) {
			this.pageSize = (pageSize == null || pageSize <= 0) ? DEFAULT_PAGE_SIZE : pageSize;
		}

		/** 每页显示记录数::默认为10 */
		public Integer getPageSize() {
			return pageSize;
		}

		/** 当前页号:默认为1 */
		public void setCurrentPage(Integer currentPage) {
			this.currentPage = (currentPage == null || currentPage <= 0) ? DEFAULT_PAGE_NUMBER : currentPage;
			;
		}

		/** 当前页号:默认为1 */
		public Integer getCurrentPage() {
			return currentPage;
		}

		/** 开始记录:同getOffset */
		public Integer getFirstResult() {
			return (getCurrentPage() - 1) * getPageSize();
		}

		/** 开始记录，偏移位置:同getFirstResult */
		public Integer getOffset() {
			return getFirstResult();
		}

		/**
		 * 排序字段和顺序 ：比如 createTime desc,effTime asc 多个之间用逗号隔开
		 */
		private String orderField;

		/**
		 * 排序字段和顺序 ：比如 createTime desc,effTime asc 多个之间用逗号隔开
		 */
		public String getOrderField() {
			return orderField;
		}

		/**
		 * 排序字段和顺序 ：比如 createTime desc,effTime asc 多个之间用逗号隔开
		 */
		public void setOrderField(String orderField) {
			this.orderField = orderField;
		}

		@Override
		public String toString() {
			return "PageRequest [pageSize=" + pageSize + ", currentPage=" + currentPage + ", orderField=" + orderField + "]";
		}
}
